Enhanced IRRADU00 record filtering using a subsystem

Within RA2002 there is an optional feature, called subsystem
RA20, to trap any generated output by these IBM exits. An installation has very often the need to go over x-million of SMF type 80 records. Using the IBM supplied exits to perform such a task will automatically waste terra-bytes of output for nothing, long before a decent report could be generated in the worst case. Just imagine due to an audit in a bank you want to check over the last 5 years the access to a specific dataset or any other resource. Using the standard IRRADU00 approach will fail due to the huge amount of generated data you do not need in the first place. Why generating data you do not need by wasting resources?


A solution to the problem would be the subsystem RA20:
JCL sample (PGM=IFASMFDP can be used instead of PGM=IFASMFDL)
//IFASMFDL  EXEC  PGM=IFASMFDL
//STEPLIB   DD DISP=SHR,DSN=RA2002.V3R7M0.LINKLIB1
//          DD DISP=SHR,DSN=RA2002.V3R7M0.LINKLIB
//OUTDD     DD 
SUBSYS=(RA20,ALS$1000,ALS$1002),
//          DCB=(RECFM=VB,LRECL=12288)
//OUTDDNEW  DD DISP=SHR,DSN=XRZP001.IRRADU00.OUTDDNEW,
//          DCB=(RECFM=VB,LRECL=12288)
//SMFOUT    DD    DUMMY,DSN=&&SMFFILE,
//          DISP=(,PASS),
//          DCB=(LRECL=32760,RECFM=VBS,BLKSIZE=0),
//          UNIT=SYSDA,SPACE=(TRK,(1,1))
//SYSPRINT  DD SYSOUT=*
//ADUPRINT  DD SYSOUT=*
//SYSIN     DD    *
 LSNAME(IFASMF.LOCAL.SEC,OPTIONS(DUMP))
 ABEND(NORETRY)
 OUTDD(SMFOUT,TYPE(80))
 USER2(IRRADU00)
 USER3(IRRADU86)
/*
//FLTPRINT  DD   SYSOUT=*
//FLTINPUT  DD  *
+INCLUDE    COND=((5,8,CH,EQ,'ACCESS',OR,5,8,CH,EQ,'DELRES'))
/*
//


or e.g.

+INCLUDE    COND=(5,008,CG,EQ,ACC*,AND,286,44,CG,EQ,RA2002.V3R7M0*.**,
 AND,578,8,CH,EQ,DATASET)





Filtering
The same filtering control statements apply here as found under ‚filter SMF records‘.


Description
The IBM supplied exits IRRADU00/86 generate the necessary output and want to write the data to //OUTDD. By using the defined subsystem RA20, the programs ALS$1000 and ALS$1002 get hold of any PUT(write) to the supplied output file called //OUTDD. ALS$1002 takes over the control and based on the supplied //FLTINPUT control cards, only the matching records will then be written to the file //OUTDDNEW instead. Et Voilà - you got what you really needed.


This kind of technology could naturally be applied to any other kind of output a user wanted to ‚trap‘. I.E. program ALS$1002 could replaced by a user written program to invoke the filtering services used in here and write any data to another file as required. Output trapping works for any output file where a PUT(write) in a program is issued.


Naturally the subsystem can be expanded to trap any PUT (not EXCP’s) request for any application. This makes indeed sense for applications like IRRADU00 or IRRDBU00 etc where no decent filtering is made available. There are many other applications on the host where e.g. a DFSORT COPY INCLUDE may not always be the most efficient solution.




* The subsystem RA20 is a licensed program and must be ordered.